package com.czy;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.junit.jupiter.api.Test;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtTest {

    /**
     * 生成JWT令牌 - Jwts.builder
     */
    @Test
    public void testGenerateJwt() {
        Map<String, Object> dataMap = new HashMap<>();
        dataMap.put("id", 1);
        dataMap.put("username", "admin");

        String jwt = Jwts.builder()
                //指定加密算法，秘钥
                .signWith(SignatureAlgorithm.HS256, "Y3p5Q29t")
                .addClaims(dataMap) //添加自定义信息
                //指定过期时间
                .setExpiration(new Date(System.currentTimeMillis() + 3600 * 1000))
                .compact();//生成令牌
        System.out.println(jwt);
    }

    /**
     * 解析JWT令牌
     */
    @Test
    public void testParseJWT(){
        String token = "eyJhbGciOiJIUzI1NiJ9.eyJpZCI6MSwidXNlcm5hbWUiOiJhZG1pbiIsImV4cCI6MTczOTM1NzAyM30.Tl5gnLrOX6tBFRGEb5v9dgWmU6fWh5gEr99IowEknLI";

        Claims claims = Jwts.parser()
                //指定秘钥
                .setSigningKey("Y3p5Q29t")
                //解析JWT令牌
                .parseClaimsJws(token)
                //获取自定义信息
                .getBody();

        System.out.println(claims);
    }
}
